Skip to content

Feat/backend - #11

Merged
vincentism merged 15 commits into
mainfrom
feat/backend
Aug 12, 2026
Merged

Feat/backend#11
vincentism merged 15 commits into
mainfrom
feat/backend

Conversation

@vincentism

Copy link
Copy Markdown
Collaborator

A. 结构重构(1 commit,breaking change)

  • 9573765 — 8 个 sibling skill 合并成单一 edgeone-makers-tools router + references/ 布局。所有 rename、docs、manifest、hooks/build 路径同步更新。

B. 登录 & 环境判定(2 commits)

  • b7e2dde — 抛弃"猜环境"策略;改成"优先浏览器登录,60s 无响应才降级 token"。明确 WorkBuddy 不算 headless。
  • fb7c9fd — Blob/KV 项目:edgeone makers dev 必须传 -n (storage / recipes / deploy 三处前置提示;troubleshooting 换掉了错误的 "skip dev, go deploy" 建议)。

C. 部署 URL 展示(4 commits,规则演进)

按时间顺序看,这条规则被逐步收紧了三轮,每轮都对着一个真实翻车 case:

  • 27ed62a — URL 必须在用户可见正文里,不能塞进 thinking 块。
  • 421018f — 加"顶部 + 侧边 present_files 面板"双通道——因为 IDE 会把长回复中间折叠。
  • d36a9e1 — 加回复前 mandatory self-check——读回用户实际看到的(不是自己的 reasoning),两条通道都有 URL 才能结束回合。
  • (相关但独立:f7ec473 — WorkBuddy 内置浏览器不渲染 alert/confirm/prompt,必须自定义 modal)

D. 40-project cap 处理(3 commits)

  • e165e1d — 首次记录 40 上限错误 + 新增 Critical Rule 9(CLI 报错原文给用户,不许 silent pivot)。
  • 737b9f2 — 加严:agent 不许自己删项目(禁 CLI / HTTP API / 复用凭据)。
  • d58015e — 再加严:只呈现这两个选项,禁"推荐"标记,禁凭空多出的第三项(CloudStudio 被点名)。

E. 内容一致性(2 commits)

  • 1552193 — Preview ban 里 "Write HTML last" 从只覆盖 CSS/JS 扩到覆盖所有依赖(+ Cloud Functions)——为压短 file:// 预览的"丑陋窗口"。
  • 454efa6 — Blob 的 consistency: "strong" IRON RULE 从 depth-2 blob.md 冒泡到 depth-1 router,防弱模型不下钻就凭记忆写代码。

F. 发布准备(1 commit)

  • 5428c2b — 四件事一起解决:_meta.json 46 个路径全部重生成、3 处 kv-storage.md 死链改指 ../makers-storage/references/kv.md、3 个 SKILL name 补 edgeone- 前缀、7 处版本号统一到 2.0.0(major bump,反映 8→1 是
    breaking)。

vincentism and others added 15 commits August 7, 2026 11:57
Previously exposed as 8 independent sub-skills under skills/makers-*/.
Move all capabilities under skills/edgeone-makers-tools/references/<name>/
and turn the top-level SKILL.md into a router. Update manifests, hooks,
build script, and top-level docs (README/CLAUDE.md/AGENTS.md) to the new
layout. Also fix the makers-migration cross-links whose display labels
still said "skills/" while URLs already used "references/".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…dless

The previous decision table sent any "non-interactive (Agent/CI/headless)"
context to Token login, which caused Agent-driven skill runs inside WorkBuddy
(a desktop IDE sandbox that bridges browser + OAuth callback) to skip the
working browser flow and demand an API Token.

Switch to a browser-first strategy: always attempt edgeone login --site <x>
first; only fall back to Token when the browser doesn't open or nothing
happens within ~60 seconds, or when the user explicitly requests a token.
Add a WorkBuddy-specific callout in env-adaption clarifying that CLI
interactive prompts hang (still need non-interactive flags) but browser
login itself works. Simplify Rule 6 back to a one-line principle and turn
the "Detect environment" sub-table into a reference-only "Login methods"
table so Rule 6 stays the single decision entry point.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…g block

The prior rule demanded the URL be placed "at the very top of your reply".
That was ambiguous — "reply" could be read as the full agent output
including chain-of-thought, so the URL sometimes ended up only inside
thinking / "深度思考" blocks that are collapsed and invisible to the user.
The "very top" prescription also fought natural reply flow when the deploy
was not the sole deliverable.

Reframe the rule around what actually matters: the URL must appear in the
user-visible reply body, in a prominent format (own line / code block /
heading, not inline). Thinking blocks explicitly do not count as "shown".
Drop the "top of reply" prescription.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… cap

Two related gaps surfaced from a real session where the account had hit
the EdgeOne Makers 40-project cap. The CLI returned "Failed to create
pages project" (from makers dev) and "Makers project exceeds 40 limit"
(from makers deploy). The agent paraphrased both into "maybe a name
conflict or permission" and silently pivoted from dev to deploy — which
failed for the exact same reason. The user only learned the real cause
after explicitly asking.

Add:
- Critical Rule 9: on any CLI failure, quote the raw error to the user
  before retrying, pivoting, or proposing a workaround. Don't paraphrase
  and don't silently switch commands hoping to bypass a systemic failure
  (auth / quota / permission hits both dev and deploy the same way).
- Error Handling row for the 40-project cap covering both dev and deploy
  symptoms, with two unblock paths (free a slot in console, or deploy
  into an existing linked project via -n).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…jects

When a project uses Blob/KV, bare edgeone makers dev drops into an
interactive "Link existing / Create and link" picker that hangs in
non-interactive sandboxes (WorkBuddy, CI). The CLI already handles
auto-create + internal link when -n is supplied; there is no need for a
separate makers link step.

Add proactive guidance so agents pass -n up front instead of learning it
from a hang:
- makers-storage SKILL: after the login/blob chain note, add a mandatory
  "-n on Blob/KV projects" callout.
- makers-recipes Preview ban: append the same requirement so it fires
  when the agent is about to trigger the post-development preview.
- makers-deploy Error Handling: replace the previous "skip dev, go
  straight to deploy" advice for the hang symptom with the correct fix
  (kill dev, restart with -n <project-name> --skip-env-sync).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
A real session showed an agent hit the 40-project cap, then bypassed the
CLI to call the undocumented pages-api.cloud.tencent.com DeletePagesProject
endpoint using credentials cached in ~/.edgeone/. The CLI omits a delete
command by design — deletion is destructive and gated to the console UI
so the user reviews and confirms. The previous wording ("delete unused
projects in the EdgeOne console to free a slot") did not close this door
explicitly enough.

Tighten the 40-cap Error Handling row: state that the agent MUST NOT
delete projects via any channel (no CLI, no HTTP APIs, no reuse of cached
credentials). Keep the two user-driven options (console delete, or point
at an existing linked project with -n).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Real session after the previous tightening: the agent still nudged the
user by tagging "delete an old project" as (Recommended) and invented a
third option "switch to CloudStudio" that has nothing to do with EdgeOne
Makers. The prior "User's options: ①/②" wording listed choices but did
not forbid annotating them or adding new ones.

Tighten the row to require the agent to present ONLY those two options,
verbatim, with no "recommended" tag on either and no fabricated third
option (call out CloudStudio explicitly since it was the observed one).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… CSS/JS

Real session: an app that needed Blob-backed cloud functions still showed
a broken skeleton in WorkBuddy's auto-launched file:// preview because
the JS tried to fetch APIs that could not exist under file://. The
existing "Write HTML last" rule only named style.css and script.js as
dependencies, missing cloud functions and other assets.

Broaden the rule so it lists every dependency category (CSS, JS, Cloud
Functions, static assets) and explicitly ties the goal to minimizing the
file:// broken-window duration until makers dev takes over.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…level

The IRON RULE lives at depth-2 in references/blob.md (line 7-9, with 🔒
emoji, bold, "No exceptions"). blob.md itself is clear enough — the
issue is that a weaker model that skims the router (makers-storage
SKILL.md) and starts coding from memory never descends into blob.md and
thus never sees the rule. Real session: model used the string form
getStore("my-store"), which defaults to eventual consistency, and hit
"I just wrote but the next read returns stale/null" bugs on votes and
counters.

Echo the rule as a one-line callout at the router level (right after the
existing "no database" and "-n on Blob/KV" callouts) so shallow readers
still get hit by it. blob.md remains the source of truth for full
rationale.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nt_files

Real session: the previous rewrite of Rule 4 relaxed "at the very top of
your reply" to "prominent, position is a judgment call". Under short
replies that was fine, but WorkBuddy's chat card auto-collapses long
replies — a URL placed mid-reply, however prominent, still got folded
into the "查看所有变更" summary entry and hidden from the user. Same
failure mode as thinking blocks, different trigger.

Restore the top-of-reply requirement AND add present_files pinning as a
mandatory second channel. The side panel is not affected by chat
folding, so it's the belt-and-suspenders always-visible surface. This
also aligns the deploy-time URL with the dev-time URL flow, where
present_files is already required to pin http://127.0.0.1:8088/.

Update the parallel "Show the user" instruction in the deploy output
section to match Rule 4.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…orkBuddy preview

Real session: a delete button used window.confirm("Delete?") to gate the
action. In WorkBuddy's built-in preview panel, confirm() returns without
showing a dialog and without user interaction, so the handler silently
no-oped — the button appeared broken. The same page worked in the user's
real Chrome after deploy.

Add §13 to the WorkBuddy Sandbox Environment section: native
alert/confirm/prompt are not rendered in the preview panel; use in-page
custom modals for any confirmation, prompt, or notification. Clarifies
that the failure only affects the WorkBuddy preview, not the user's real
browser — otherwise the code looks correct in review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Real session with a weaker model (DeepSeek V4): the deep-think block
literally said "Deploy successful! Let me now present this to the user"
and contained URL: https://...edgeone.cool?..., but the visible reply
body was just "部署成功!" with everything else folded into 查看所有变更
summary. The model believed writing the URL in its reasoning satisfied
the presentation requirement.

Rule 4 already specified placement (top of visible body + present_files
side panel) but did not require the agent to verify placement before
ending the turn. Add a mandatory self-check step: read back what the
user will actually see (not the reasoning content), verify both channels
carry the URL, and if either is missing, send an additional short
follow-up message with the URL block and re-call present_files. Reject
"I already mentioned it in my reasoning" as a valid excuse.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pre-release audit uncovered four blockers/consistency issues carried over
from the earlier 8-skills → 1-skill consolidation. Address all four:

1. _meta.json listed 39 legacy paths under skills/makers-*/, none of
   which still exist. SkillHub installs would receive a broken package.
   Regenerate the files list from the current tree (46 entries, including
   the makers-migration/references/* additions).

2. Three markdown links pointed to a same-directory "kv-storage.md" that
   never existed post-restructure. The actual file is
   makers-storage/references/kv.md. Repoint both makers-edge-functions
   references and the makers-recipes reference to
   ../makers-storage/references/kv.md.

3. Three SKILL frontmatter names (makers-cli, makers-cloud-functions,
   makers-migration) lacked the edgeone- prefix that the other seven
   already use. Align them so name-based routing / validation is
   consistent.

4. Version numbers were split: manifests carried 1.0.0 while _meta.json
   and top-level SKILL.md carried 1.0.4. Bump every carrier to 2.0.0
   (major bump reflects the breaking layout change from 8 sibling skills
   to a single router).

Regenerated codex/*.md and cursor/rules/*.mdc mirrors to reflect the
renamed frontmatter names in the affected SKILLs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vincentism
vincentism merged commit 81a8649 into main Aug 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant